home *** CD-ROM | disk | FTP | other *** search
/ Micom Basic 1995 August / CD [BM9508].bin / programs / sc2000 / disk1 / sc2k4win.ms_ / sc2k4win.bin
Encoding:
Text File  |  1995-03-14  |  13.7 KB  |  469 lines

  1. '**************************************************************************
  2. '*                       SimCity 2000 For Windows Setup file
  3. '*                       By Chris Weiss
  4. '*                       Last Edited July 18, 1994
  5. '*                       Some portions (c) 1994 Microsoft Corp.
  6. '**************************************************************************
  7.  
  8. '$DEFINE DEBUG  ''Define for script development/debugging
  9.  
  10. ' This should set a flag if the command line /NO_CHECK was included
  11. ' This must occur before calling setupapi, or any command line args get
  12. ' lost
  13.  
  14. GLOBAL Dont_Check_For_Space
  15. COMMAND$=UCASE$(COMMAND$)
  16. IF INSTR(COMMAND$, "NO_CHECK") > 0 THEN 
  17.     Dont_Check_For_Space = 1
  18.     sz$=MID$(COMMAND$,1,(INSTR(COMMAND$,"NO_CHECK")-1))
  19.     COMMAND$=sz$
  20.     END IF
  21.  
  22. ' End checking
  23.  
  24. '$INCLUDE 'setupapi.inc'
  25. '$INCLUDE 'msdetect.inc'
  26.  
  27. ''Dialog ID's
  28. CONST WELCOME       = 100
  29. CONST ASKQUIT       = 200
  30. CONST DESTPATH      = 300
  31. CONST EXITFAILURE   = 400
  32. CONST REGNAG        = 500
  33. CONST READMENAG     = 501
  34. CONST SIXTEENCOLS   = 502
  35. CONST EXITQUIT      = 600
  36. CONST EXITSUCCESS   = 700
  37. CONST APPHELP       = 900
  38. CONST MODEHELP      = 904
  39. CONST TOOBIG        = 6300
  40. CONST BADPATH       = 6400
  41. CONST PATHEXISTS    = 6500
  42. CONST CONFNAME      = 7300
  43. CONST GETUSER       = 7500
  44. CONST BADNAME       = 7700
  45. CONST BADVIDEO      = 7701
  46. CONST BADCOMPANY    = 7702
  47. CONST BADMODE       = 7704
  48.  
  49. '' Some Constant Values for Maximized Install Window
  50. CONST WS_VISIBLE      =&H10000000
  51. CONST WS_BORDER       =&H00800000
  52. CONST WS_CLIPCHILDREN =&H02000000
  53. CONST GWL_STYLE = -16
  54. CONST SW_SHOWMAXIMIZED = 3
  55. '' End Maximized Window Install Constants
  56.  
  57. ''Misc program values
  58. CONST INSTALLED_SIZE = 7000000    ''Size of installed SC2k for free space check
  59.  
  60.  
  61. ''Bitmap ID
  62. CONST LOGO = 1
  63.  
  64. GLOBAL DEST$        ''Default destination directory.
  65. GLOBAL USERNAME$    ''User registration name.
  66. GLOBAL COMPANYNAME$ ''Company Name 
  67. GLOBAL WINDIR$
  68. GLOBAL WINSYSDIR$
  69. GLOBAL WING1$
  70.  
  71. WINDIR$ = GetWindowsDir()
  72. WINSYSDIR$ = GetWindowsSysDir ()
  73.  
  74. DECLARE SUB Install
  75. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  76. DECLARE FUNCTION VflatdPresent LIB "iniupd.DLL" AS INTEGER
  77.  
  78. '' Some Subroutine Declarations for Maximized Install Window
  79. DECLARE FUNCTION ShowWindow LIB "user.exe" (hWnd%, iShow%) AS INTEGER
  80. DECLARE FUNCTION SetWindowLong LIB "user.exe" (hWnd%, offset%, style&) AS LONG
  81. '' End Declarations for Maximized Window Install
  82.  
  83. INIT:
  84. '' This is where we set it to maximize the install window - If the user has NO_CHECK, we ignore this.
  85. IF Dont_Check_For_Space = 0 THEN
  86. hWnd%=HwndFrame() 
  87.  i1&=SetWindowLong(hWnd%,GWL_STYLE,WS_VISIBLE+WS_BORDER+WS_CLIPCHILDREN) 
  88.  j1%=ShowWindow(hWnd%,SW_SHOWMAXIMIZED) 
  89. END IF
  90. '' End of Maximize stuff
  91.  
  92.     CUIDLL$ = "mscuistf.dll"            ''Custom user interface dll
  93.     HELPPROC$ = "FHelpDlgProc"          ''Help dialog procedure
  94.  
  95.     SetBitmap CUIDLL$, LOGO
  96.     SetTitle " SimCity 2000(R) for Windows Setup"
  97.  
  98.     szInf$ = GetSymbolValue("STF_SRCINFPATH")
  99.     IF szInf$ = "" THEN
  100.     szInf$ = GetSymbolValue("STF_CWDDIR") + "SETUP.INF"
  101.     END IF
  102.     ReadInfFile szInf$
  103.  
  104. '    DEST$ = "C:\SC2K4WIN"
  105.     DEST$ = "C:\SC2KDEMO"    ''æ╠î▒ö┼
  106.  
  107.  
  108. '$IFDEF DEBUG
  109.     i% = SetSizeCheckMode(scmOnIgnore)    '' could use scmOff; def = scmOnFatal
  110.     WinDrive$ = MID$(GetWindowsDir, 1, 1)
  111.     IF IsDriveValid(WinDrive$) = 0 THEN
  112.     i% = DoMsgBox("Windows drive ('"+WinDrive$+"') is not a valid drive.", "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK)
  113.     GOTO QUIT
  114.     END IF
  115. '$ENDIF ''DEBUG
  116.  
  117.  
  118.     IF Dont_Check_For_Space = 1 THEN
  119.     i% = DoMsgBox("NO_CHECK specified, forcing install to C:\SC2KWIN. I will not be held responsible for my actions!", "Verification Status", MB_TASKMODAL+MB_ICONHAND+MB_OK)
  120.     USERNAME$="Installed with NO_CHECK"
  121. '    COMPANYNAME$="Please Edit SC2K4WIN.INI"
  122.     COMPANYNAME$="Please Edit SC2KDEMO.INI"    ''æ╠î▒ö┼
  123.     GOTO DOWING
  124.     END IF
  125.  
  126. WELCOME:
  127.     sz$ = UIStartDlg(CUIDLL$, WELCOME, "FInfoDlgProc", APPHELP, HELPPROC$)
  128.     IF sz$ = "CONTINUE" THEN
  129.     UIPop 1
  130.     ELSE
  131.     GOSUB ASKQUIT
  132.     GOTO WELCOME
  133.     END IF
  134.  
  135.  
  136. CHECKMODE:
  137.     i% = GetWindowsMode ()
  138.     IF i% < 2 THEN
  139.      sz$ = UIStartDLG(CUIDLL$, BADMODE, "FInfoDlgProc", MODEHELP, HELPPROC$)
  140.      IF SZ$ = "CONTINUE" THEN
  141.           UIPop 1
  142.      ELSE
  143.         UIPop 1
  144.         GOSUB ASKQUIT
  145.         GOTO CHECKMODE
  146.      END IF
  147.     END IF
  148.  
  149. GETTHEUSER:
  150. '    sz$ = UIStartDlg(CUIDLL$, GETUSER, "FNameOrgDlgProc", APPHELP, HELPPROC$)
  151. '    USERNAME$ = GetSymbolValue("NameOut")
  152. '    COMPANYNAME$ = GetSymbolValue("OrgOut")
  153. '' æ╠î▒ö┼
  154.     sz$ = "CONTINUE"
  155.     USERNAME$ = "╝╤╝├¿2000æ╠î▒ö┼"
  156.     COMPANYNAME$ = "âCâ}âWâjâAèöÄ«ë∩Ä╨"
  157.  
  158.     IF sz$ = "CONTINUE" THEN
  159.     IF LEN(USERNAME$) < 1 OR LEN(USERNAME$) > 22 OR MID$(USERNAME$,1,1) = " " THEN
  160.         GOSUB BADNAME
  161.         GOTO GETTHEUSER
  162.     END IF
  163.     IF LEN(COMPANYNAME$) > 22 OR MID$(COMPANYNAME$,1,1) = " " THEN
  164.         GOSUB BADCOMPANY
  165.         GOTO GETTHEUSER
  166.     END IF
  167.     UIPop 1
  168.     ELSEIF sz$ = "REACTIVATE" THEN
  169.     GOTO GETTHEUSER
  170.     ELSEIF sz$ = "BACK" THEN
  171.     UIPop 1
  172.     GOTO WELCOME
  173.     ELSE
  174.     GOSUB ASKQUIT
  175.     GOTO GETTHEUSER
  176.     END IF
  177.  
  178. GETPATH:
  179.     SetSymbolValue "EditTextIn", DEST$
  180.     SetSymbolValue "EditFocus", "END"
  181. GETPATHL1:
  182.     sz$ = UIStartDlg(CUIDLL$, DESTPATH, "FEditDlgProc", APPHELP, HELPPROC$)
  183.     DEST$ = GetSymbolValue("EditTextOut")
  184.  
  185.     IF sz$ = "CONTINUE" THEN
  186.     IF MID$(DEST$, LEN(DEST$), 1) = "\" THEN
  187.         DEST$ = MID$(DEST$,1,LEN(DEST$) - 1)
  188.     END IF
  189.  
  190.  
  191. '' This is the portion that says what I said
  192.  
  193. IF Dont_Check_For_Space = 0 THEN
  194.  
  195.     ' Is it a writeable directory?
  196.  
  197.     IF IsDirWritable(DEST$) = 0 THEN
  198.         GOSUB BADPATH
  199.         GOTO GETPATHL1
  200.     END IF
  201.     ''temp$ = "Free Space is " + str$(GetFreeSpaceForDrive(MID$(DEST$,1,1)))
  202.     ''i% = DoMsgBox(temp$, "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  203.     
  204.     ' Check free space
  205.  
  206.     IF GetFreeSpaceForDrive(MID$(DEST$,1,1)) < INSTALLED_SIZE THEN
  207.     GOSUB TOOBIG
  208.     GOTO GETPATHL1
  209.     END IF
  210.  
  211.     ' Does it exist?
  212.  
  213.     IF DoesFileExist(DEST$ + "\SC2000W.EXE", FemExists) = 1 THEN
  214.        SetSymbolValue "ConfirmTextIn", DEST$
  215.        sz$ = UIStartDlg(CUIDLL$, PATHEXISTS, "FConfirmDlgProc", 0, "")
  216.          IF sz$ = "EXIT" THEN
  217.            UIPopAll
  218.            ERROR STFQUIT
  219.          ELSEIF sz$ = "BACK" THEN
  220.            UIPop 1
  221.            GOTO GETTHEUSER
  222.          ELSEIF sz$ = "REACTIVATE" THEN
  223.            GOTO CONFIRMALL
  224.          ELSE
  225.            UIPop 1
  226.          END IF
  227.     END IF
  228. END IF
  229.  
  230.     UIPop 1
  231.     ELSEIF sz$ = "REACTIVATE" THEN
  232.     GOTO GETPATHL1
  233.     ELSEIF sz$ = "BACK" THEN
  234.     UIPop 1
  235.     GOTO GETTHEUSER
  236.     ELSE
  237.     GOSUB ASKQUIT
  238.     GOTO GETPATH
  239.     END IF
  240.  
  241.  
  242.  
  243. CONFIRMALL:
  244.     SetSymbolValue "ConfirmTextIn", USERNAME$
  245.     AddListItem "ConfirmTextIn", COMPANYNAME$
  246.     AddListItem "ConfirmTextIn", DEST$
  247.     sz$ = UIStartDlg(CUIDLL$, CONFNAME, "FConfirmDlgProc", 0, "")
  248.     IF sz$ = "EXIT" THEN
  249.     UIPopAll
  250.     ERROR STFQUIT
  251.     ELSEIF sz$ = "BACK" THEN
  252.     UIPop 1
  253.     GOTO GETTHEUSER
  254.     ELSEIF sz$ = "REACTIVATE" THEN
  255.     GOTO CONFIRMALL
  256.     ELSE
  257.     UIPop 1
  258.     END IF
  259.  
  260. DOWING:
  261. ' This portion installs the DVA.386 driver on machines in Enhanced Mode
  262.     IF VflatdPresent() = 0 THEN
  263.         CreateSysIniKeyValue GetWindowsDir + "system.ini", "386Enh", "device", GetWindowsSysDir+"dva.386", cmoOverwrite
  264.     bInstallDVA% = 1
  265.       END IF
  266.  
  267.     WING1$ = "WinG"
  268.     RemoveIniSection "WIN.INI", wing1$, CmoNone
  269.  
  270.     Install
  271.  
  272.  
  273. QUIT:
  274.     ON ERROR GOTO ERRQUIT
  275.  
  276.     IF ERR = 0 THEN
  277.     dlg% = EXITSUCCESS
  278.     ELSEIF ERR = STFQUIT THEN
  279.     dlg% = EXITQUIT
  280.     ELSE
  281.     dlg% = EXITFAILURE
  282.     END IF
  283. QUITL1:
  284.     sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
  285.     IF sz$ = "REACTIVATE" THEN
  286.     GOTO QUITL1
  287.     END IF
  288.     UIPop 1
  289.  
  290.     END
  291.  
  292. ERRQUIT:
  293.     i% = DoMsgBox("Setup sources were corrupted!  Please call Maxis Technical Support.", "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  294.     END
  295.  
  296.  
  297.  
  298. BADPATH:
  299.     sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
  300.     IF sz$ = "REACTIVATE" THEN
  301.     GOTO BADPATH
  302.     END IF
  303.     UIPop 1
  304.     RETURN
  305.  
  306. BADNAME:
  307.     sz$ = UIStartDlg(CUIDLL$, BADNAME, "FInfo0DlgProc", 0, "")
  308.     IF sz$ = "REACTIVATE" THEN
  309.     GOTO BADNAME
  310.     END IF
  311.     UIPop 1
  312.     RETURN
  313.  
  314. BADCOMPANY:
  315.     sz$ = UIStartDlg(CUIDLL$, BADCOMPANY, "FInfo0DlgProc", 0, "")
  316.     IF sz$ = "REACTIVATE" THEN
  317.     GOTO BADCOMPANY
  318.     END IF
  319.     UIPop 1
  320.     RETURN
  321.  
  322.  
  323. TOOBIG:
  324.     sz$ = UIStartDlg(CUIDLL$, TOOBIG, "FInfo0DlgProc", 0, "")
  325.     IF sz$ = "REACTIVATE" THEN
  326.     GOTO TOOBIG
  327.     END IF
  328.     UIPop 1
  329.     RETURN
  330.  
  331.  
  332. ASKQUIT:
  333.     sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
  334.  
  335.     IF sz$ = "EXIT" THEN
  336.     UIPopAll
  337.     ERROR STFQUIT
  338.     ELSEIF sz$ = "REACTIVATE" THEN
  339.     GOTO ASKQUIT
  340.     ELSE
  341.     UIPop 1
  342.     END IF
  343.     RETURN
  344.  
  345.  
  346.  
  347. '**
  348. '** Purpose:
  349. '**     Builds the copy list and performs all installation operations.
  350. '** Arguments:
  351. '**     none.
  352. '** Returns:
  353. '**     none.
  354. '*************************************************************************
  355. SUB Install STATIC
  356.  
  357.     SrcDir$ = GetSymbolValue("STF_SRCDIR")
  358.     CreateDir DEST$, cmoNone
  359.     CreateDir DEST$ + "\SCENARIO", cmoNone
  360.     CreateDir DEST$ + "\SOUNDS", cmoNone
  361.     CreateDir DEST$ + "\BITMAPS", cmoNone
  362.     CreateDir DEST$ + "\DATA", cmoNone
  363. '    CreateDir DEST$ + "\DRIVERS", cmoNone
  364.  
  365.     OpenLogFile MakePath(DEST$, "SETUP.LOG"), 0
  366.     WriteToLogFile ""
  367.     WriteToLogFile "  User chose as destination directory: '" + DEST$ + "'"
  368.     WriteToLogFile ""
  369.     WriteToLogFile "May have had to create the directory: " + DEST$
  370.     WriteToLogFile "May have had to create the directory: " + DEST$ + "\SCENARIO"
  371.     WriteToLogFile "May have had to create the directory: " + DEST$ + "\SOUNDS"
  372.     WriteToLogFile "May have had to create the directory: " + DEST$ + "\BITMAPS"
  373.     WriteToLogFile "May have had to create the directory: " + DEST$ + "\DATA"
  374.  
  375. ' Add this if we're gonna install SVGA drivers
  376. '    WriteToLogFile "May have had to create the directory: " + DEST$ + "\DRIVERS"
  377.     
  378.     WriteToLogFile ""
  379.  
  380.     ClearCopyList
  381.     ClearBillboardList
  382.  
  383.  
  384. '    AddToBillboardList "mscuistf.dll", READMENAG, "FModelessDlgProc", 1
  385. '    AddToBillboardList "mscuistf.dll", REGNAG, "FModelessDlgProc", 1
  386. '    AddToBillboardList "mscuistf.dll", SIXTEENCOLS, "FModelessDlgProc", 1    
  387.  
  388.     AddSectionFilesToCopyList "BITMAPS", SrcDir$, DEST$ + "\BITMAPS"
  389.     AddSectionFilesToCopyList "Files", SrcDir$, DEST$
  390.     AddSectionFilesToCopyList "SCENARIO", SrcDir$, DEST$ + "\SCENARIO"
  391.     AddSectionFilesToCopyList "SOUNDS", SrcDir$, DEST$ + "\SOUNDS"
  392.     AddSectionFilesToCopyList "DATA", SrcDir$, DEST$ + "\DATA"
  393.     AddSectionFilesToCopyList "WING", SrcDir$, WINSYSDIR$
  394.  
  395. 'Add this if we're gonna install SVGA drivers
  396. '    AddSectionFilesToCopyList "DRIVERS", SrcDir$, DEST$ + "\DRIVERS"
  397.     
  398.     CopyFilesInCopyList
  399.  
  400. '' Took these out because it just doesnt work and we wanted to finish
  401.  
  402. ''    CreateIniKeyValue "WIN.INI", "Extensions", "SC2", DEST$ + "\SC2000W.EXE ^.SC2", cmoOverwrite
  403. ''    CreateIniKeyValue "WIN.INI", "Extensions", "SCN", DEST$ + "\SC2000W.EXE ^.SCN", cmoOverwrite
  404.  
  405. '    ini$ = MakePath(WINDIR$, "SC2K4WIN.INI")
  406.  
  407.     ini$ = MakePath(WINDIR$, "SC2KDEMO.INI")    ''æ╠î▒ö┼
  408.     CreateIniKeyValue ini$, "REGISTRATION", "Mayor Name", USERNAME$, cmoOverwrite
  409.     CreateIniKeyValue ini$, "REGISTRATION", "Company Name", COMPANYNAME$, cmoOverwrite
  410.     CreateIniKeyValue ini$, "PATHS", "Home", DEST$, cmoOverwrite
  411.     CreateIniKeyValue ini$, "PATHS", "Scenarios", DEST$ + "\SCENARIO", cmoOverwrite
  412.     CreateIniKeyValue ini$, "PATHS", "Graphics", DEST$ + "\BITMAPS", cmoOverwrite
  413.     CreateIniKeyValue ini$, "PATHS", "Music", DEST$ + "\SOUNDS", cmoOverwrite
  414.     CreateIniKeyValue ini$, "PATHS", "Cities", DEST$, cmoOverwrite
  415.     CreateIniKeyValue ini$, "PATHS", "Tilesets", DEST$ + "\DATA", cmoOverwrite
  416.     CreateIniKeyValue ini$, "LOCALIZE", "Language", "USA", cmoOverwrite
  417.     CreateIniKeyValue ini$, "WINDOWS", "Edit Window Position", "0 0 0 0", cmoOverwrite
  418.     CreateIniKeyValue ini$, "WINDOWS", "Toolbar Position", "0 0", cmoOverwrite
  419.     CreateIniKeyValue ini$, "OPTIONS", "Speed", "Normal", cmoOverwrite
  420.     CreateIniKeyValue ini$, "OPTIONS", "Sound", "On", cmoOverwrite
  421.     CreateIniKeyValue ini$, "OPTIONS", "Music", "On", cmoOverwrite
  422.     CreateIniKeyValue ini$, "OPTIONS", "AutoGoto", "On", cmoOverwrite
  423.     CreateIniKeyValue ini$, "OPTIONS", "Auto Budget", "Off", cmoOverwrite
  424.     CreateIniKeyValue ini$, "OPTIONS", "No Disasters", "Off", cmoOverwrite
  425.  
  426. '    CreateProgmanGroup "Maxis", "", cmoNone
  427. '    ShowProgmanGroup  "Maxis", 1, cmoNone
  428. '    CreateProgmanItem "Maxis", "SimCity 2000 for Windows", DEST$ + "\SC2000W.EXE", "", cmoOverwrite
  429. '    CreateProgmanItem "Maxis", "SimCity 2000 ReadMe", DEST$ + "\README.WRI", "", cmoOverwrite
  430. '    CreateProgmanItem "Maxis", "SimCity 2000 Help", DEST$ + "\SC2USA.HLP", "", cmoOverwrite
  431. '' æ╠î▒ö┼
  432.  
  433.     CreateProgmanGroup "SC2KDemo", "", cmoNone
  434.     ShowProgmanGroup  "SC2KDemo", 1, cmoNone
  435.     CreateProgmanItem "SC2KDemo", "SC2000 for │▓▌─▐│╜▐æ╠î▒ö┼", DEST$ + "\SC2000W.EXE", "", cmoOverwrite
  436.     CreateProgmanItem "SC2KDemo", "SC2000 ReadMe", DEST$ + "\README.WRI", "", cmoOverwrite
  437.     CreateProgmanItem "SC2KDemo", "SC2000 Help", DEST$ + "\SC2USA.HLP", "", cmoOverwrite
  438.  
  439.  
  440.  
  441.     CloseLogFile
  442.  
  443. END SUB
  444.  
  445.  
  446.  
  447. '**
  448. '** Purpose:
  449. '**     Appends a file name to the end of a directory path,
  450. '**     inserting a backslash character as needed.
  451. '** Arguments:
  452. '**     szDir$  - full directory path (with optional ending "\")
  453. '**     szFile$ - filename to append to directory
  454. '** Returns:
  455. '**     Resulting fully qualified path name.
  456. '*************************************************************************
  457. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  458.     IF szDir$ = "" THEN
  459.     MakePath = szFile$
  460.     ELSEIF szFile$ = "" THEN
  461.     MakePath = szDir$
  462.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  463.     MakePath = szDir$ + szFile$
  464.     ELSE
  465.     MakePath = szDir$ + "\" + szFile$
  466.     END IF
  467. END FUNCTION
  468.  
  469.